package com.ruoyi.gwc.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.core.domain.FileObject;
import com.ruoyi.common.core.domain.LatLng;
import com.ruoyi.system.domain.typehandler.FileObjectTypeHandler;
import com.ruoyi.system.domain.typehandler.LatLngTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 维修管理对象 t_repair_management
 * 
 * @author wp
 * @date 2024-12-13
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString
@Accessors(chain = true)
@TableName(value = "t_repair_management",excludeProperty = {"createTime", "createBy","updateTime","updateBy", "remark"})
public class TRepairManagement extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 维修单id */
    @TableId(type = IdType.ASSIGN_ID)
    private Long repairId;

    /** 所属作业公司 */
    private Long companyId;
    @Excel(name = "公司名称",sort = 1)
    @TableField(exist = false)
    private String companyName;

    /** 送修人id */
    private Long driverId;
    @Excel(name = "驾驶员姓名",sort = 2)
    @TableField(exist = false)
    private String driverName;
    @Excel(name = "联系电话", sort = 3)
    @TableField(exist = false)
    private String contactNumber;


    /** 车辆id */
    private Long vehicleId;
    @Excel(name = "车牌号",sort = 4)
    @TableField(exist = false)
    private String numberPlate;
	
	    /** 委托维修单位 */
    @Excel(name = "委托维修单位",sort = 5)
    private String repairCompany;

    /** WGS84坐标系 */
    @ApiModelProperty("WGS84坐标系")
    @TableField(typeHandler = LatLngTypeHandler.class)
    private List<LatLng> pointsWgs84;

    /** 预约维修项目 */
    @Excel(name = "预约维修项目",sort = 6)
    private String orderRepair;

    /** 维修原因（0:轮胎补休，1：剐蹭补漆，2：事故大修，3：玻璃破碎，4：其他原因） */
    @Excel(name = "维修原因", sort = 7, dictType = "repairReason")
    private Long repairReason;

    /** 维修费用单位元 */
    @Excel(name = "维修费用单位元",sort = 8)
    private BigDecimal repairCost;
    @TableField(exist = false)
    private String repairCostStr;

    /** 送修里程单位米 */
    @Excel(name = "送修里程单位公里",sort = 9)
    private BigDecimal repairRepair;
    @TableField(exist = false)
    private String repairRepairStr;

    /** 预计费用单位元 */
    @Excel(name = "预计费用单位元",sort = 10)
    private BigDecimal expectCost;
    @TableField(exist = false)
    private String expectCostStr;

    /** 送修时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "送修时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss" ,sort = 11)
    private Date repairTime;

    @ApiModelProperty("开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd", timezone = "GMT+8")
    @TableField(exist = false)
    private Date startTime;

    @ApiModelProperty("结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd", timezone = "GMT+8")
    @TableField(exist = false)
    private Date endTime;

    /** 厂牌型号 */
    @Excel(name = "厂牌型号",sort = 12)
    private String brandModel;


    /** 订单状态（0:已申请，1：已审批，2：已送修，3：已完成，4：已撤销 5：已驳回） */
    @Excel(name = "订单状态",sort = 13,dictType = "repairOrderStatus")
    private Long orderStatus;

    /** 维修凭证列表 json list */
    @ApiModelProperty("维修凭证列表")
    @TableField(typeHandler = FileObjectTypeHandler.class)
    private List<FileObject> imageRepair;

    /** 申请凭证列表 json list */
    @ApiModelProperty("申请凭证列表")
    @TableField(typeHandler = FileObjectTypeHandler.class)
    private List<FileObject> imageList;

    /** 备注说明 */
    @Excel(name = "备注说明",sort = 14)
    private String remark;

    public void setRepairId(Long repairId) 
    {
        this.repairId = repairId;
    }

    public Long getRepairId() 
    {
        return repairId;
    }
    public void setCompanyId(Long companyId) 
    {
        this.companyId = companyId;
    }

    public Long getCompanyId() 
    {
        return companyId;
    }
    public void setDriverId(Long driverId) 
    {
        this.driverId = driverId;
    }

    public Long getDriverId() 
    {
        return driverId;
    }
    public void setVehicleId(Long vehicleId) 
    {
        this.vehicleId = vehicleId;
    }

    public Long getVehicleId() 
    {
        return vehicleId;
    }
    public void setRepairCompany(String repairCompany) 
    {
        this.repairCompany = repairCompany;
    }

    public String getRepairCompany() 
    {
        return repairCompany;
    }
    public void setPointsWgs84(List<LatLng> pointsWgs84)
    {
        this.pointsWgs84 = pointsWgs84;
    }

    public List<LatLng> getPointsWgs84()
    {
        return pointsWgs84;
    }
    public void setOrderRepair(String orderRepair) 
    {
        this.orderRepair = orderRepair;
    }

    public String getOrderRepair() 
    {
        return orderRepair;
    }
    public void setRepairReason(Long repairReason)
    {
        this.repairReason = repairReason;
    }

    public Long getRepairReason()
    {
        return repairReason;
    }

    //维修费用单位元
    public void setRepairCostStr(String repairCostStr){
        this.repairCostStr = repairCostStr;
    }
    public String getRepairCostStr()
    {
        return repairCostStr;
    }

    public void setRepairCost(BigDecimal repairCost)
    {
        this.repairCost = repairCost;
    }
    public BigDecimal getRepairCost()
    {
        return repairCost;
    }

    //送修里程单位米
    public void setRepairRepair(BigDecimal repairRepair)
    {
        this.repairRepair = repairRepair;
    }
    public BigDecimal getRepairRepair()
    {
        return repairRepair;
    }

    public void setRepairRepairStr(String repairRepairStr)
    {
        this.repairRepairStr = repairRepairStr;
    }
    public String getRepairRepairStr()
    {
        return repairRepairStr;
    }

    //预计费用单位元
    public void setExpectCost(BigDecimal expectCost)
    {
        this.expectCost = expectCost;
    }
    public BigDecimal getExpectCost()
    {
        return expectCost;
    }

    public void setExpectCostStr(String expectCostStr)
    {
        this.expectCostStr = expectCostStr;
    }
    public String getExpectCostStr()
    {
        return expectCostStr;
    }

    public void setRepairTime(Date repairTime) 
    {
        this.repairTime = repairTime;
    }

    public Date getRepairTime() 
    {
        return repairTime;
    }
    public void setBrandModel(String brandModel) 
    {
        this.brandModel = brandModel;
    }

    public String getBrandModel() 
    {
        return brandModel;
    }
  
    public void setOrderStatus(Long orderStatus) 
    {
        this.orderStatus = orderStatus;
    }

    public Long getOrderStatus() 
    {
        return orderStatus;
    }

    public void setImageRepair(List<FileObject> imageRepair)
    {
        this.imageRepair = imageRepair;
    }
    public List<FileObject> getImageRepair()
    {
        return imageRepair;
    }

    public void setImageList(List<FileObject> imageList)
    {
        this.imageList = imageList;
    }
    public List<FileObject> getImageList()
    {
        return imageList;
    }



    public void setCompanyName(String companyName)
    {
        this.companyName = companyName;
    }
    public String getCompanyName(){  return companyName;  }

    public void setNumberPlate(String numberPlate)
    {
        this.numberPlate = numberPlate;
    }
    public String getNumberPlate(){  return numberPlate;  }

    public void setDriverName(String driverName)
    {
        this.driverName = driverName;
    }
    public String getDriverName(){  return driverName;  }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("repairId", getRepairId())
            .append("companyId", getCompanyId())
            .append("companyName", getCompanyName())
            .append("driverId", getDriverId())
            .append("vehicleId", getVehicleId())
            .append("repairCompany", getRepairCompany())
            .append("pointsWgs84", getPointsWgs84())
            .append("orderRepair", getOrderRepair())
            .append("repairReason", getRepairReason())
            .append("repairCost", getRepairCost())
            .append("repairRepair", getRepairRepair())
            .append("expectCost", getExpectCost())
            .append("repairTime", getRepairTime())
            .append("brandModel", getBrandModel())
            .append("repairCompany", getRepairCompany())
            .append("orderRepair", getOrderRepair())
            .append("expectCost", getExpectCost())
            .append("orderStatus", getOrderStatus())
            .append("imageList", getImageList())
            .append("remark", getRemark())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("updateBy", getUpdateBy())
            .append("createBy", getCreateBy())
            .toString();
    }
}
